package xkp.lesson1;

/**
 * 添加统计Person对象个数的功能
 * @author Administrator
 *
 */
public class Person {
	
	public static int allCount;
	public static int currentCount;
	
	//成员变量的语法,[]括起来的部分可以省略。
	//访问修饰符 数据类型 名称 [=默认值];
	//如果不写默认值,则默认值为数据类型的默认值
	private String name;
	//把age使用private修饰，把age隐藏
	private int age;
	
	{
		//构造代码块
		allCount++;
		currentCount++;
	}
	
	public Person() {
		// TODO Auto-generated constructor stub
	}
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	//暴露一个获取age的统一接口
	public int getAge() {
		return this.age;
	}
	
	public String getName() {
		return this.name==null?"":this.name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	//暴露一个设置age的统一接口
	public void setAge(int age) {
		//在方法中可以进行判断
		//注意||逻辑或的短路问题。
		if(age > 150 || age <0) {
			System.out.println("年龄不符合要求，请重新设置");
			return;
		}
		//注意this关键字,表示当前对象
		this.age = age;//能不能这样写,因为对变量的访问遵循就近原则
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
	@Override
	protected void finalize() throws Throwable {
		// TODO Auto-generated method stub
		super.finalize();
		System.out.println(this.toString()+"被销毁");
		currentCount--;
	}
	

}
